package lambda05;

import org.junit.Test;

import java.util.Arrays;
import java.util.Random;
import java.util.function.Supplier;

/**
 * Supplier接口:
 *   适用于只获取结果不传递参数的操作
 *
 *  @FunctionalInterface
 * public interface Supplier<T> {
       T get();
   }

    Arrays类中的toString方法:
        static String toString(int[] a)
               将数组中的元素拼接成一个字符串,返回这个字符串
 */
public class SupplierDemo {
	@Test
	public void test01() {
		//获取一个1~10之间的随机数
		int i = new Random().nextInt(10) + 1;//[1,11)
		System.out.println(i);
	}

	@Test
	public void test02() {
		//Supplier<Integer> s = ()->{return new Random().nextInt(10) + 1;};
		Supplier<Integer> s = ()-> new Random().nextInt(10) + 1;
		System.out.println(s.get());
	}

	@Test
	public void test03() {
		//获取10个1~10之间的随机数,将这些随机数存放到一个数组,最后打印数组中的元素
		int[] arr = new int[10];
		Supplier<Integer> s = ()-> new Random().nextInt(10) + 1;

		for (int i = 0; i < 10; i++) {
            arr[i]= s.get();
		}

		Supplier<String> s2 = () -> Arrays.toString(arr);
		System.out.println(s2.get());
	}
}
/**
 *   class SupplierDemo$$Lambda$1 implements Supplier<Integer>{
 *
 *       public Integer get(){
 *          return  new Random().nextInt(10) + 1;
 *       }
 *
 *   }
 *
 *
 *
 *
 */
